Video compression standards provide several mechanisms, such as slicing and tiling, to divide a picture into several sections that can be processed independently. The picture sections are further divided into smaller blocks that are processed sequentially to achieve a good ratio of video quality to compressed size. Processing of the smaller blocks involves block-level decisions. For high-quality video coding systems, the block-level decision process typically has several steps, including loading of reference samples, motion estimation, cost calculation of various prediction candidates and final calculation of the block using a selected candidate.
The performance of processing a section of the picture is limited due to the sequential nature of the video coding process. A known technique to work around the sequential nature of the coding process is to use estimated neighbor information to construct predictors. The use of estimated neighbor information to construct predictors allows hardware to be pipelined, but comes at a cost of significantly lower video coding quality. Performance can be increased without loss of quality by processing multiple sections of the picture in parallel. Typical multi-core solutions provide the above performance increase at the cost of a significant increase of the hardware area. The increase in area grows linearly with the increase in performance.
It would be desirable to implement an interleaved video coding pipeline.